home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / SCSL / strmm.z / strmm
Encoding:
Text File  |  2002-10-03  |  20.8 KB  |  397 lines

  1.  
  2.  
  3.  
  4. SSSSTTTTRRRRMMMMMMMM((((3333SSSS))))                                                            SSSSTTTTRRRRMMMMMMMM((((3333SSSS))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      SSSSTTTTRRRRMMMMMMMM, DDDDTTTTRRRRMMMMMMMM, CCCCTTTTRRRRMMMMMMMM, ZZZZTTTTRRRRMMMMMMMM - Multiplies a real or complex general matrix
  10.      by a real or complex triangular matrix
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      Single precision
  14.  
  15.           Fortran:
  16.  
  17.                CCCCAAAALLLLLLLL SSSSTTTTRRRRMMMMMMMM ((((_s_i_d_e,,,, _u_p_l_o,,,, _t_r_a_n_s_a,,,, _d_i_a_g,,,, _m,,,, _n,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _b,,,,
  18.                _l_d_b))))
  19.  
  20.           C/C++:
  21.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  22.                vvvvooooiiiidddd ssssttttrrrrmmmmmmmm ((((cccchhhhaaaarrrr *_s_i_d_e,,,, cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s_A,,,, cccchhhhaaaarrrr *_d_i_a_g,,,,
  23.                iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ffffllllooooaaaatttt _a_l_p_h_a,,,, ffffllllooooaaaatttt *_a,,,, iiiinnnntttt _l_d_a,,,, ffffllllooooaaaatttt *_b,,,, iiiinnnntttt
  24.                _l_d_b))));;;;
  25.  
  26.      Double precision
  27.  
  28.           Fortran:
  29.                CCCCAAAALLLLLLLL DDDDTTTTRRRRMMMMMMMM ((((_s_i_d_e,,,, _u_p_l_o,,,, _t_r_a_n_s_a,,,, _d_i_a_g,,,, _m,,,, _n,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _b,,,,
  30.                _l_d_b))))
  31.  
  32.           C/C++:
  33.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  34.                vvvvooooiiiidddd ddddttttrrrrmmmmmmmm ((((cccchhhhaaaarrrr *_s_i_d_e,,,, cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s_A,,,, cccchhhhaaaarrrr *_d_i_a_g,,,,
  35.                iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ddddoooouuuubbbblllleeee _a_l_p_h_a,,,, ddddoooouuuubbbblllleeee *_a,,,, iiiinnnntttt _l_d_a,,,, ddddoooouuuubbbblllleeee *_b,,,, iiiinnnntttt
  36.                _l_d_b))));;;;
  37.  
  38.      Single precision complex
  39.  
  40.           Fortran:
  41.                CCCCAAAALLLLLLLL CCCCTTTTRRRRMMMMMMMM ((((_s_i_d_e,,,, _u_p_l_o,,,, _t_r_a_n_s_a,,,, _d_i_a_g,,,, _m,,,, _n,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _b,,,,
  42.                _l_d_b))))
  43.  
  44.           C/C++:
  45.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  46.                vvvvooooiiiidddd ccccttttrrrrmmmmmmmm ((((cccchhhhaaaarrrr *_s_i_d_e,,,, cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s_A,,,, cccchhhhaaaarrrr *_d_i_a_g,,,,
  47.                iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a_l_p_h_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,,
  48.                ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_b,,,, iiiinnnntttt _l_d_b))));;;;
  49.  
  50.           C++ STL:
  51.                ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>>
  52.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  53.                vvvvooooiiiidddd ccccttttrrrrmmmmmmmm ((((cccchhhhaaaarrrr *_s_i_d_e,,,, cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s_A,,,, cccchhhhaaaarrrr *_d_i_a_g,,,,
  54.                iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_a_l_p_h_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_a,,,, iiiinnnntttt
  55.                _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_b,,,, iiiinnnntttt _l_d_b))));;;;
  56.  
  57.      Double precision complex
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. SSSSTTTTRRRRMMMMMMMM((((3333SSSS))))                                                            SSSSTTTTRRRRMMMMMMMM((((3333SSSS))))
  71.  
  72.  
  73.  
  74.           Fortran:
  75.                CCCCAAAALLLLLLLL ZZZZTTTTRRRRMMMMMMMM ((((_s_i_d_e,,,, _u_p_l_o,,,, _t_r_a_n_s_a,,,, _d_i_a_g,,,, _m,,,, _n,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _b,,,,
  76.                _l_d_b))))
  77.  
  78.           C/C++:
  79.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  80.                vvvvooooiiiidddd zzzzttttrrrrmmmmmmmm ((((cccchhhhaaaarrrr *_s_i_d_e,,,, cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s_A,,,, cccchhhhaaaarrrr *_d_i_a_g,,,,
  81.                iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a_l_p_h_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,,
  82.                ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_b,,,, iiiinnnntttt _l_d_b))));;;;
  83.  
  84.           C++ STL:
  85.                ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>>
  86.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  87.                vvvvooooiiiidddd zzzzttttrrrrmmmmmmmm ((((cccchhhhaaaarrrr *_s_i_d_e,,,, cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s_A,,,, cccchhhhaaaarrrr *_d_i_a_g,,,,
  88.                iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a_l_p_h_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a,,,, iiiinnnntttt
  89.                _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_b,,,, iiiinnnntttt _l_d_b))));;;;
  90.  
  91. IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN
  92.      These routines are part of the SCSL Scientific Library and can be loaded
  93.      using either the ----llllssssccccssss or the ----llllssssccccssss____mmmmpppp option.  The ----llllssssccccssss____mmmmpppp option
  94.      directs the linker to use the multi-processor version of the library.
  95.  
  96.      When linking to SCSL with ----llllssssccccssss or ----llllssssccccssss____mmmmpppp, the default integer size is
  97.      4 bytes (32 bits). Another version of SCSL is available in which integers
  98.      are 8 bytes (64 bits).  This version allows the user access to larger
  99.      memory sizes and helps when porting legacy Cray codes.  It can be loaded
  100.      by using the ----llllssssccccssss____iiii8888 option or the ----llllssssccccssss____iiii8888____mmmmpppp option. A program may use
  101.      only one of the two versions; 4-byte integer and 8-byte integer library
  102.      calls cannot be mixed.
  103.  
  104.      The C and C++ prototypes shown above are appropriate for the 4-byte
  105.      integer version of SCSL. When using the 8-byte integer version, the
  106.      variables of type iiiinnnntttt become lllloooonnnngggg lllloooonnnngggg and the <<<<ssssccccssssllll____bbbbllllaaaassss____iiii8888....hhhh>>>> header
  107.      file should be included.
  108.  
  109. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  110.      SSSSTTTTRRRRMMMMMMMM and DDDDTTTTRRRRMMMMMMMM multiply a real general matrix by a real triangular
  111.      matrix.
  112.  
  113.      CCCCTTTTRRRRMMMMMMMM and ZZZZTTTTRRRRMMMMMMMM multiply a complex general matrix by a complex triangular
  114.      matrix.
  115.  
  116.      These routines perform one of the matrix-matrix operations:
  117.  
  118.           _B <- _a_l_p_h_a _o_p(_A)_B
  119.  
  120.           or
  121.  
  122.           _B <- _a_l_p_h_a _B _o_p(_A)
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. SSSSTTTTRRRRMMMMMMMM((((3333SSSS))))                                                            SSSSTTTTRRRRMMMMMMMM((((3333SSSS))))
  137.  
  138.  
  139.  
  140.      where _a_l_p_h_a is a scalar; _B is an _m-by-_n matrix; _A is either a unit or
  141.      nonunit upper or lower triangular matrix, and _o_p(_A) is one of the
  142.      following:
  143.  
  144.      *   _o_p(_A) = _A
  145.  
  146.      *   _o_p(_A) = _A_T
  147.  
  148.      *   _o_p(_A) = _A_H    (CCCCTTTTRRRRMMMMMMMM and ZZZZTTTTRRRRMMMMMMMM only)
  149.  
  150.      where
  151.  
  152.      *   _A_T is the transpose of _A
  153.  
  154.      *   _A_H is the conjugate transpose of _A.
  155.  
  156.      See the NOTES section of this man page for information about the
  157.      interpretation of the data types described in the following arguments.
  158.  
  159.      These routines have the following arguments:
  160.  
  161.      _s_i_d_e      Character.  (input)
  162.                Specifies whether _o_p(_A) multiplies _B from the left or right, as
  163.                follows:
  164.  
  165.                _s_i_d_e = 'L' or 'l':  _B <- _a_l_p_h_a _o_p(_A)_B
  166.  
  167.                _s_i_d_e = 'R' or 'r':  _B <- _a_l_p_h_a _B _o_p(_A)
  168.  
  169.                For C/C++, a pointer to this character is passed.
  170.  
  171.      _u_p_l_o      Character.  (input)
  172.                Specifies whether matrix _A is an upper or lower triangular
  173.                matrix, as follows:
  174.  
  175.                _u_p_l_o = 'U' or 'u': _A is an upper triangular matrix.
  176.                _u_p_l_o = 'L' or 'l': _A is a lower triangular matrix.
  177.  
  178.                For C/C++, a pointer to this character is passed.
  179.  
  180.      _t_r_a_n_s_a    Character.  (input)
  181.                Specifies the form of _o_p(_A) to be used in the matrix
  182.                multiplication, as follows:
  183.  
  184.                _t_r_a_n_s_a = 'N' or 'n': _o_p(_A) = _A
  185.  
  186.                _t_r_a_n_s_a = 'T' or 't', _o_p(_A) = _A_T
  187.  
  188.                _t_r_a_n_s_a = 'C' or 'c':  _o_p(_A) = _A_T (SSSSTTTTRRRRMMMMMMMM, DDDDTTTTRRRRMMMMMMMM),
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. SSSSTTTTRRRRMMMMMMMM((((3333SSSS))))                                                            SSSSTTTTRRRRMMMMMMMM((((3333SSSS))))
  203.  
  204.  
  205.  
  206.                or _o_p(_A) = _A_H (CCCCTTTTRRRRMMMMMMMM, ZZZZTTTTRRRRMMMMMMMM)
  207.  
  208.                For C/C++, a pointer to this character is passed.
  209.  
  210.      _d_i_a_g      Character*1.  (input)
  211.                Specifies whether _A is unit triangular, as follows:
  212.  
  213.                _d_i_a_g = 'U' or 'u': _A is assumed to be unit triangular.
  214.                _d_i_a_g = 'N' or 'n': _A is not assumed to be unit triangular.
  215.  
  216.                For C/C++, a pointer to this character is passed.
  217.  
  218.      _m         Integer.  (input)
  219.                Specifies the number of rows in _B.  _m must be >= 0.
  220.  
  221.      _n         Integer.  (input)
  222.                Specifies the number of columns in _B.  _n must be >= 0.
  223.  
  224.      _a_l_p_h_a     Scalar factor.  (input)
  225.                SSSSTTTTRRRRMMMMMMMM: Single precision.
  226.                DDDDTTTTRRRRMMMMMMMM: Double precision.
  227.                CCCCTTTTRRRRMMMMMMMM: Single precision complex.
  228.                ZZZZTTTTRRRRMMMMMMMM: Double precision complex.
  229.                When _a_l_p_h_a is 0, _a is not referenced and _b need not be set
  230.                before entry.
  231.  
  232.                For C/C++, a pointer to this scalar is passed when alpha is
  233.                complex; otherwise, alpha is passed by value.
  234.  
  235.      _a         Array of dimension (_l_d_a,_k).  (input)
  236.                SSSSTTTTRRRRMMMMMMMM: Single precision array.
  237.                DDDDTTTTRRRRMMMMMMMM: Double precision array.
  238.                CCCCTTTTRRRRMMMMMMMM: Single precision complex array.
  239.                ZZZZTTTTRRRRMMMMMMMM: Double precision complex array.
  240.  
  241.                When _s_i_d_e = 'L' or 'l', _k is _m; when _s_i_d_e = 'R' or 'r', _k is _n.
  242.                Contains the matrix _A.
  243.  
  244.                Before entry with _u_p_l_o = 'U' or 'u', the leading _k-by-_k upper
  245.                triangular part of array _a must contain the upper triangular
  246.                matrix.  The strictly lower triangular part of _a is not
  247.                referenced.
  248.  
  249.                Before entry with _u_p_l_o = 'L' or 'l', the leading _k-by-_k lower
  250.                triangular part of array _a must contain the lower triangular
  251.                matrix.  The strictly upper triangular part of _a is not
  252.                referenced.
  253.  
  254.                When _d_i_a_g = 'U' or 'u', the diagonal elements of _a are not
  255.                referenced, but they are assumed to be unity.
  256.  
  257.  
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. SSSSTTTTRRRRMMMMMMMM((((3333SSSS))))                                                            SSSSTTTTRRRRMMMMMMMM((((3333SSSS))))
  269.  
  270.  
  271.  
  272.      _l_d_a       Integer.  (input)
  273.  
  274.                Specifies the first dimension of _a as declared in the calling
  275.                program.
  276.                When _s_i_d_e = 'L' or 'l', _l_d_a >= MMMMAAAAXXXX(1,_m).  When _s_i_d_e = 'R' or
  277.                'r', _l_d_a >= MMMMAAAAXXXX(1,_n).
  278.  
  279.      _b         Array of dimension (_l_d_b,_n).  (input and output)
  280.                SSSSTTTTRRRRMMMMMMMM: Single precision array.
  281.                DDDDTTTTRRRRMMMMMMMM: Double precision array.
  282.                CCCCTTTTRRRRMMMMMMMM: Single precision complex array.
  283.                ZZZZTTTTRRRRMMMMMMMM: Double precision complex array.
  284.                Contains the matrix _B.
  285.  
  286.                Before entry, the leading _m-by-_n part of array _b must contain
  287.                matrix _B.  On exit, the transformed matrix overwrites array _b.
  288.  
  289.      _l_d_b       Integer.  (input)
  290.                Specifies the first dimension of _b as declared in the calling
  291.                program.  _l_d_b >= MMMMAAAAXXXX(1,_m).
  292.  
  293. NNNNOOOOTTTTEEEESSSS
  294.      These routines are Level 3 Basic Linear Algebra Subprograms (Level 3
  295.      BLAS).
  296.  
  297.  
  298.    DDDDaaaattttaaaa TTTTyyyyppppeeeessss
  299.      The following data types are described in this documentation:
  300.  
  301.           TTTTeeeerrrrmmmm UUUUsssseeeedddd                     DDDDaaaattttaaaa ttttyyyyppppeeee
  302.  
  303.      Fortran:
  304.  
  305.           Array dimensioned _n           xxxx((((nnnn))))
  306.  
  307.           Array of dimensions (_m,_n)     xxxx((((mmmm,,,,nnnn))))
  308.  
  309.           Character                     CCCCHHHHAAAARRRRAAAACCCCTTTTEEEERRRR
  310.  
  311.           Integer                       IIIINNNNTTTTEEEEGGGGEEEERRRR (IIIINNNNTTTTEEEEGGGGEEEERRRR****8888 for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]])
  312.  
  313.           Single precision              RRRREEEEAAAALLLL
  314.  
  315.           Double precision              DDDDOOOOUUUUBBBBLLLLEEEE PPPPRRRREEEECCCCIIIISSSSIIIIOOOONNNN
  316.  
  317.           Single precision complex      CCCCOOOOMMMMPPPPLLLLEEEEXXXX
  318.  
  319.           Double precision complex      DDDDOOOOUUUUBBBBLLLLEEEE CCCCOOOOMMMMPPPPLLLLEEEEXXXX
  320.  
  321.      C/C++:
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. SSSSTTTTRRRRMMMMMMMM((((3333SSSS))))                                                            SSSSTTTTRRRRMMMMMMMM((((3333SSSS))))
  335.  
  336.  
  337.  
  338.           Array dimensioned _n           xxxx[[[[_n]]]]
  339.  
  340.           Array of dimensions (_m,_n)     xxxx[[[[mmmm****nnnn]]]]
  341.  
  342.           Character                     cccchhhhaaaarrrr
  343.  
  344.           Integer                       iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]])
  345.  
  346.           Single precision              ffffllllooooaaaatttt
  347.  
  348.           Double precision              ddddoooouuuubbbblllleeee
  349.  
  350.           Single precision complex      ssssccccssssllll____ccccoooommmmpppplllleeeexxxx
  351.  
  352.           Double precision complex      ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx
  353.  
  354.      C++ STL:
  355.  
  356.           Array dimensioned _n           xxxx[[[[_n]]]]
  357.  
  358.           Array of dimensions (_m,_n)     xxxx[[[[mmmm****nnnn]]]]
  359.  
  360.           Character                     cccchhhhaaaarrrr
  361.  
  362.           Integer                       iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]])
  363.  
  364.           Single precision              ffffllllooooaaaatttt
  365.  
  366.           Double precision              ddddoooouuuubbbblllleeee
  367.  
  368.           Single precision complex      ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>>
  369.  
  370.           Double precision complex      ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>>
  371.  
  372.      Note that you can explicitly declare multidimensional C/C++ arrays
  373.      provided that the array dimensions are swapped with respect to the
  374.      Fortran declaration (e.g., xxxx[[[[nnnn]]]][[[[mmmm]]]] in C/C++ versus xxxx((((mmmm,,,,nnnn)))) in Fortran).
  375.      To avoid a compiler type mismatch error in C++ (or a compiler warning
  376.      message in C), however, the array should be cast to a pointer of the
  377.      appropriate type when passed as an argument to a SCSL routine.
  378.  
  379. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  380.      IIIINNNNTTTTRRRROOOO____SSSSCCCCSSSSLLLL(3S), IIIINNNNTTTTRRRROOOO____BBBBLLLLAAAASSSS3333(3S)
  381.  
  382.      IIIINNNNTTTTRRRROOOO____CCCCBBBBLLLLAAAASSSS(3S) for information about using the C interface to Fortran 77
  383.      Basic Linear Algebra Subprograms (legacy BLAS) set forth by the Basic
  384.      Linear Algebra Subprograms Technical Forum.
  385.  
  386.  
  387.  
  388.  
  389.  
  390.                                                                         PPPPaaaaggggeeee 6666
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.